home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / dev / e / capus2.lha / capus2 / LibTests / TEST_superview.library / Sview.e < prev    next >
Encoding:
Text File  |  1995-04-05  |  24.2 KB  |  744 lines

  1. /* ============================================= */
  2. /* TEST superview.library by NasGûl              */
  3. /* all structures are in source code (no module) */
  4. /* ============================================= */
  5. MODULE 'exec/nodes','exec/lists','exec/libraries'
  6. MODULE 'intuition/intuition','intuition/intuitionbase'
  7. MODULE 'intuition/screens'
  8. MODULE 'superviewsupport'
  9. MODULE 'superview'
  10. MODULE 'svdrivers'
  11. MODULE 'svobjects'
  12. MODULE 'gadtools'
  13. MODULE 'eropenlib'
  14.  
  15. ENUM ER_NONE,ER_ONLYCLI,ER_SUPERVIEWLIB,ER_BADARGS,ER_HANDLE
  16.  
  17. /*"superview.h"*/
  18. /* superview/superview.h            */
  19. /* Version    : 6.1                 */
  20. /* Date       : 27.05.1994          */
  21. /* Written by : Andreas R. Kleinert */
  22.  
  23.  
  24. /* *************************************************** */
  25. /* *                                                 * */
  26. /* * Version Defines                                 * */
  27. /* *                                                 * */
  28. /* *************************************************** */
  29.  
  30. CONST SVLIB_VERSION=6
  31.  
  32. /* *************************************************** */
  33. /* *                             * */
  34. /* * DEFINES                         * */
  35. /* *                             * */
  36. /* *************************************************** */
  37.  
  38.  
  39. /* Possible FileTypes */
  40.  
  41. CONST SV_FILETYPE_NONE=0
  42. CONST SV_FILETYPE_UNKNOWN=SV_FILETYPE_NONE
  43. CONST SV_FILETYPE_ILLEGAL=$FFFFFFFF
  44.  
  45. CONST SV_FILETYPE_ILBM=1          /* IFF-ILBM, any derivat   */
  46. CONST SV_FILETYPE_ACBM=2          /* IFF-ACBM, any derivat   */
  47. CONST SV_FILETYPE_DATATYPE=3      /* V39-Datatype-Object     */
  48.  
  49.      /*
  50.     up to here  : Constant codes for IFF-ILBM, IFF-ACBM and DataTypes
  51.               (constant for compatibility reasons).
  52.     above these : External, user defined FileSubTypes
  53.               (defined EACH TIME NEW at Library's startup-time).
  54.      */
  55.  
  56.  
  57. /* Possible SubTypes of FileTypes */
  58.  
  59. CONST SV_SUBTYPE_NONE=0
  60. CONST SV_SUBTYPE_UNKNOWN=SV_SUBTYPE_NONE
  61. CONST SV_SUBTYPE_ILLEGAL=$FFFFFFFF
  62.  
  63. CONST SV_SUBTYPE_ILBM=1          /* Is IFF-ILBM              */
  64. CONST SV_SUBTYPE_ILBM_01=2          /* Is IFF-ILBM, CmpByteRun1 */
  65. CONST SV_SUBTYPE_ACBM=3          /* Is IFF-ACBM              */
  66. CONST SV_SUBTYPE_DATATYPE=4          /* Is V39-DataType-Object   */
  67.  
  68.      /*
  69.     up to here  : Constant codes for IFF-ILBM, IFF-ACBM and DataTypes
  70.               (constant for compatibility reasons).
  71.     above these : External, user defined FileSubTypes
  72.               (defined EACH TIME NEW at Library's startup-time).
  73.      */
  74.  
  75.  
  76. /* Possible Input and Output mediums */
  77.  
  78. CONST AKO_MEDIUM_NONE=0          /* means : DEFAULT          */
  79. CONST AKO_MEDIUM_ILLEGAL=$FFFFFFFF
  80.  
  81. CONST AKO_MEDIUM_DISK=1              /* Read and Write media     */
  82. CONST AKO_MEDIUM_CLIP=2
  83.  
  84.      /* not any medium might be supported by any SVObject */
  85.  
  86.  
  87. /* *************************************************** */
  88. /* *                             * */
  89. /* * Function Error Codes                * */
  90. /* *                             * */
  91. /* *************************************************** */
  92.  
  93. CONST SVERR_MAX_ERROR_TEXT_LENGTH=80       /* plus Null-Byte */
  94.  
  95. CONST SVERR_NO_ERROR=NIL
  96. CONST SVERR_INTERNAL_ERROR=$FFFFFFFF
  97.  
  98. CONST SVERR_UNKNOWN_FILE_FORMAT=1
  99. CONST SVERR_FILE_NOT_FOUND=2
  100. CONST SVERR_NO_MEMORY=3
  101. CONST SVERR_IFFPARSE_ERROR=4
  102. CONST SVERR_NO_CLIPBOARD=5
  103. CONST SVERR_NO_SCREEN=6
  104. CONST SVERR_NO_FILE=7
  105. CONST SVERR_NO_HANDLE=8
  106. CONST SVERR_NO_DATA=9
  107. CONST SVERR_GOT_NO_WINDOW=10
  108. CONST SVERR_GOT_NO_SCREEN=11
  109. CONST SVERR_NO_INFORMATION=12
  110. CONST SVERR_ILLEGAL_ACCESS=13
  111. CONST SVERR_DECODE_ERROR=14
  112. CONST SVERR_UNKNOWN_PARAMETERS=15
  113. CONST SVERR_ACTION_NOT_SUPPORTED=16
  114. CONST SVERR_VERSION_CONFLICT=17
  115. CONST SVERR_NO_DRIVER_AVAILABLE=18
  116.  
  117.     /* Each new Library-Subversion may contain new Codes above
  118.        the last one of these.
  119.        So do not interpret the codes directly, but use
  120.        SVL_GetErrorString().
  121.        Maybe, newer Codes will not be listed up here.
  122.     */
  123.  
  124. OBJECT gfxbuffer /* SV_GfxBuffer */
  125.  
  126.  /*
  127.     All values are strictly READ-ONLY :
  128.     - DO NOT write-access any entries !
  129.     - DO NOT free any memory by hand !
  130.  */
  131.  
  132.  version:LONG        /* structure version, see below            */
  133.  buffertype:LONG     /* Data organization, see below            */
  134.  width:LONG          /* Graphic's Width                             */
  135.  height:LONG         /* Graphic's Height                            */
  136.  colordepth:LONG     /* Graphic's ColorDepth                        */
  137.  viewmode32:LONG     /* if NULL, best ScreenMode is suggested       */
  138.  colors[768]:ARRAY   /* For ColorDepth < 8 : 3-Byte RGB         */
  139.  bytesperline:LONG   /* as in conventional BitMaps (see below)      */
  140.                      /* only valid, if svgfx_BufferType == BITPLANE */
  141.  pixelbits:LONG      /* how many Bits per Pixel : 8, 16, 24 ?       */
  142.                      /* only valid, if svgfx_BufferType == ONEPLANE */
  143.  buffer:LONG         /* any kind of memory (no chip ram needed)     */
  144.  buffersize:LONG     /* if you want to copy it ...          */
  145.  
  146. ENDOBJECT /* size of structure may grow in future versions : Check svgfx_Version ! */
  147.  
  148. CONST SVGFX_VERSION=1
  149.  
  150. CONST SVGFX_BUFFERTYPE_BITPLANE=1  /* Amiga-like BitPlanes            */
  151. CONST SVGFX_BUFFERTYPE_ONEPLANE=2  /* single Byte-/Word-/24 Bit-Plane */
  152.  
  153. /* there may be more types in the future */
  154.  
  155.  
  156. /* structure of svgfx_Buffer is as follows :
  157.  
  158.    BITPLANE : Amiga-like BitPlane, upto 256 Colors (8 Bit)
  159.           NO SPECIAL ALIGNMENT IS DONE.
  160.    ONEPLANE :  8 Bit : Chunky Pixel (ColorMap)
  161.           16 Bit : R:G:B = 5:5:5 plus 1 Bit Alpha Channel (IGNORED)
  162.           24 Bit : R:G:B = 8:8:8
  163. */
  164. /**/
  165. /*"superviewbase.h"*/
  166. /* superview/superviewbase.h        */
  167. /* Version    : 6.1                 */
  168. /* Date       : 23.05.1994          */
  169. /* Written by : Andreas R. Kleinert */
  170.  
  171.    /*
  172.       All entries are READ-ONLY.
  173.       The private entries should NEVER be accessed.
  174.    */
  175.  
  176. OBJECT superviewbase
  177.  libnode:lib
  178.  seglist:LONG
  179.  sysbase:LONG
  180.  dosbase:LONG
  181.  intuitionbase:LONG
  182.  gfxbase:LONG
  183.  
  184.   /* next have been added with V2 : */
  185.  
  186.  iffparsebase:LONG  /* may be NULL */
  187.  datatypesbase:LONG /* may be NULL */
  188.  
  189.  svobjectlist:lh
  190.  private1:LONG      /* DO NOT ACCESS */
  191.  private2:LONG      /* DO NOT ACCESS */
  192.  private3:LONG      /* DO NOT ACCESS */
  193.  
  194.   /* next have been added with V3 : */
  195.  
  196.  svdriverlist:lh
  197.  globaldriver:LONG  /* may be NULL for Default-Driver */
  198.  
  199.   /* next have been added with V4 : */
  200.  
  201.  utilitybase:LONG
  202.  svsupportbase:LONG
  203. ENDOBJECT
  204. /**/
  205. /*"svinfo.h"*/
  206. /* superview/svinfo.h               */
  207. /* Version    : 6.1                 */
  208. /* Date       : 27.05.1994          */
  209. /* Written by : Andreas R. Kleinert */
  210.  
  211. /* *************************************************** */
  212. /* *                                                 * */
  213. /* * Information structures (SVObjects & SVDrivers)  * */
  214. /* *                                                 * */
  215. /* *************************************************** */
  216.  
  217.    /* the following have been introduced with V6 : */
  218.  
  219. OBJECT svobjectinfo
  220.  type:LONG            /* valid SubTypeCode value       */
  221.  flags:LONG           /* Copy of Flags from svo_Flags  */
  222.  typename:LONG        /* Copy of svo_TypeID and        */
  223.                       /* svo_SubTypeID[x]              */
  224.  nextentry:LONG       /* Pointer to next entry or NULL */
  225. ENDOBJECT
  226.  
  227. OBJECT svdriverinfo
  228.  flags:LONG     /* Copy of Flags from svd_Flags  */
  229.  name:LONG      /* Pointer to svd_ID             */
  230.  nextentry:LONG /* Pointer to next entry or NULL */
  231. ENDOBJECT
  232. /**/
  233.  
  234. /*"superviewsupport.h"*/
  235. /* superviewsupport/superviewsupport.h */
  236. /* Version    : 3.1                    */
  237. /* Date       : 23.05.1994             */
  238. /* Written by : Andreas R. Kleinert    */
  239.  
  240. /* *************************************************** */
  241. /* *                             * */
  242. /* * Version Defines                     * */
  243. /* *                             * */
  244. /* *************************************************** */
  245.  
  246. CONST SVSUPPORTLIB_VERSION=3
  247.  
  248.  
  249. /* *************************************************** */
  250. /* *                             * */
  251. /* * Includes                        * */
  252. /* *                             * */
  253. /* *************************************************** */
  254.  
  255. /*  === ControlPads === */
  256.  
  257. /* see documentation for more and detailed information on ControlPad-Files */
  258.  
  259. OBJECT controlpad          /* These ControlPads are supplied as    */
  260.                            /* single-chained list, where the       */
  261.  entryname:LONG            /* pointer to the last entry is NULL.   */
  262.  entrycontent:LONG         /* Do not free them by Hand.            */
  263.  nextentry:LONG
  264. ENDOBJECT
  265. /**/
  266. /*"svsupportbase.h"*/
  267. /* superviewsupport/svsupportbase.h */
  268. /* Version    : 2.1                 */
  269. /* Date       : 22.05.1994          */
  270. /* Written by : Andreas R. Kleinert */
  271.  
  272. OBJECT svsupportbase
  273.  libnode:lib
  274.  seglist:LONG
  275.  sysbase:LONG
  276.  dosbase:LONG
  277.  intuitionbase:LONG
  278.  gfxbase:LONG
  279.  utilitybase:LONG
  280. ENDOBJECT
  281. /**/
  282.  
  283. /*"svdrivers.h"*/
  284. /* svdrivers/svdrivers.h            */
  285. /* Version    : 3.5                 */
  286. /* Date       : 25.03.1994          */
  287. /* Written by : Andreas R. Kleinert */
  288.  
  289. /* SVDriver-Version V1.x+ */
  290.  
  291. OBJECT drivernode
  292.  node:ln              /* chaining Node                         */
  293.                       /* (svd_Node->ln_Name MUST               */
  294.                       /*  point to svd_FileName !)             */
  295.  
  296.  version:LONG         /* Library-Version of svdriver           */
  297.  
  298.  flags:LONG           /* Flags, see below                      */
  299.  
  300.  filename[108]:ARRAY  /* use 30, as in struct FileInfoBlock    */
  301.  
  302.  maxwidth:LONG                /* max. Screen Dimensions or 0xFFFFFFFF  */
  303.  maxheight:LONG
  304.  maxdepth:LONG
  305.  id[80]:ARRAY                 /* short description, e.g. "AGA Driver"  */
  306.  
  307.  /* size may grow with bigger svd_Version, see below */
  308. ENDOBJECT
  309.  
  310. CONST SVD_VERSION=1             /* If this Version, which depends on the */
  311.                                     /* svdriver's Library-Version, is set,   */
  312.                                     /* it is guaranteed, that at least the   */
  313.                                     /* above information is available.       */
  314.  
  315.    /* Flags allowed for svd_Flags field. Values are "just for info" yet. */
  316.  
  317. CONST SVDF_INTUITION=0       /* Intuition compatible Display          */
  318.                              /* e.g. Amiga, ECS, AA                   */
  319.                              /* or compatible Graphic Cards           */
  320.  
  321. CONST SVDF_FOREIGN=1       /* incompatible Gfx Display              */
  322.                            /* e.g. EGS                              */
  323. /**/
  324. /*"svdriverbase.h"*/
  325. /* svdrivers/svdriverbase.h     */
  326. /* Version    : 3.5         */
  327. /* Date       : 28.03.1994      */
  328. /* Written by : Andreas R. Kleinert */
  329.  
  330.  
  331.    /* An external Driver-Library (for graphics cards, framebuffers, etc.)
  332.       for the superview.library is called a "svdriver".
  333.       Each svdriver has to contain a "SVD_DriverNode" structure (as follows)
  334.       in its Library-Header, which later will be READ and MODIFIED by
  335.       the superview.library.
  336.    */
  337.  
  338.    /* The Construction of a svdriver :
  339.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  340.  
  341.       The Library Base
  342.       ----------------
  343.  
  344.       Version MUST be 1 yet, Revision can be set freely
  345.  
  346.       (see structure described below)
  347.  
  348.  
  349.       The Function Table
  350.       ------------------
  351.  
  352.       (see <pragmas/svdrivers.h> or Reference_ENG.doc)
  353.  
  354.    */
  355.  
  356. /* *************************************************** */
  357. /* *                             * */
  358. /* * Library base Definition for svdrivers       * */
  359. /* *                             * */
  360. /* *************************************************** */
  361.  
  362. OBJECT svdriverbase
  363.  libnode:lib       /* Exec LibNode           */
  364.  svdriver:LONG     /* POINTER to initialized         */
  365.                    /* SVD_DriverNode             */
  366.                    /* Define it somewhere else,      */
  367.                    /* then initialize this pointer.  */
  368.  
  369.  reserved[32]:ARRAY    /* Reserved for future expansion. */
  370.                        /* Always NULL yet (Version 1).   */
  371.  
  372.  /*
  373.    Private data of the svdriver, not to be accessed
  374.    by superview.library, may follow.
  375.  */
  376. ENDOBJECT
  377. /**/
  378.  
  379. /*"svobectbase.h"*/
  380. /* svobjects/svobjectbase.h     */
  381. /* Version    : 3.7         */
  382. /* Date       : 28.04.1994      */
  383. /* Written by : Andreas R. Kleinert */
  384.  
  385. /* SVObject-Version V2.x+ */
  386.  
  387.  
  388.    /* An external support-library for the superview.library is called a
  389.       "svobject".
  390.       Each svobject has to contain a "SVO_ObjectNode" structure (as follows)
  391.       in its Library-Header, which later will be READ and MODIFIED by
  392.       the superview.library.
  393.       Because the superview.library supports three different sorts
  394.       of SVObjects at the time (internal, independent and external),
  395.       there are three different types of this structure (might be more in
  396.       the future), which can be identified via their "svo_ObjectType".
  397.    */
  398.  
  399.    /* The Construction of a svobject :
  400.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  401.  
  402.       The Library Base
  403.       ----------------
  404.  
  405.       Version MUST be 2 yet, Revision can be set freely
  406.  
  407.       (see structure described below)
  408.  
  409.  
  410.       The Function Table
  411.       ------------------
  412.  
  413.       (see <pragmas/svobjects.h> or Reference_ENG.doc)
  414.  
  415.    */
  416.  
  417. /* *************************************************** */
  418. /* *                             * */
  419. /* * Library base Definition for svobjects       * */
  420. /* *                             * */
  421. /* *************************************************** */
  422.  
  423. OBJECT svobjectbase
  424.  libnode:LONG       /* Exec LibNode           */
  425.  svobject:LONG;      /* POINTER to initialized         */
  426.                     /* SVO_ObjectNode             */
  427.                     /* Define it somewhere else,      */
  428.                     /* then initialize this pointer.  */
  429.  
  430.  reserved[32]:ARRAY  /* Reserved for future expansion. */
  431.                      /* Always NULL yet (Version 1).   */
  432.  
  433.  /*
  434.    Private data of the svobject, not to be accessed
  435.    by superview.library, may follow.
  436.  */
  437. ENDOBJECT
  438. /**/
  439. /*"svobjects.h"*/
  440. /* svobjects/svobjects.h            */
  441. /* Version    : 4.1                 */
  442. /* Date       : 15.05.1994          */
  443. /* Written by : Andreas R. Kleinert */
  444.  
  445. /* SVObject-Version V2.x+ */
  446.  
  447.  
  448.  
  449. OBJECT objectnode
  450.  node:ln              /* chaining Node                         */
  451.                       /* (svo_Node->ln_Name is NULL            */
  452.                       /*  by default !)                        */
  453.  
  454.  version:LONG         /* Library-Version of svobject           */
  455.  
  456.  objecttype:LONG      /* see below (SVO_OBJECTTYPE_...)        */
  457.  
  458.  filename[108]:ARRAY   /* use 30, as in struct FileInfoBlock    */
  459.  
  460.  typeid[32]:ARRAY        /* e.g. "GIF"                            */
  461.  typecode:LONG                /* ... and its appropriate Code,  ,      */
  462.                                     /* assigned by superview.library LATER.  */
  463.  
  464.  subtypenum:LONG              /* actually available SubTypes           */
  465.                                     /* (maximum 16) of the svobject.         */
  466.  
  467.                                     /* 0xFFFFFFFF means, that it is an       */
  468.                                     /* INDEPENDENT entry, which is an        */
  469.                                     /* unimplemented feature yet and         */
  470.                                     /* means that the SubTypeID and          */
  471.                                     /* SubTypeCode fields should be skipped. */
  472.  
  473.  subtypeid[256]:ARRAY    /* e.g. "87a" or "89a"                   */
  474.  subtypecode[16]:ARRAY        /* ... and their appropriate Codes,      */
  475.                                     /* assigned by superview.library LATER.  */
  476.  
  477.  /* version 2 extensions : */
  478.  
  479.  flags:LONG                   /* SVO_FLAG_... (see below)              */
  480.  
  481.  /* size may grow with bigger svo_Version, see below */
  482. ENDOBJECT
  483.  
  484. CONST SVO_VERSION=2             /* If this Version, which depends on the */
  485.                                     /* svobject's Library-Version, is set,   */
  486.                                     /* it is guaranteed, that at least the   */
  487.                                     /* above information is available.       */
  488.  
  489. CONST SVO_FILENAME="INTE"     /* for internal svobjects only.          */
  490.  
  491.  
  492. CONST SVO_OBJECTTYPE_NONE=0
  493. CONST SVO_OJECTTYPE_UNKNOWN=SVO_OBJECTTYPE_NONE
  494. CONST SVO_OBJECTTYPE_ILLEGAL=$FFFFFFFF
  495.  
  496. CONST SVO_OBJECTTYPE_INTERNAL=1 /* internal                   */
  497. CONST SVO_OBJECTTYPE_INDEPENDENT=2 /* UNIMPLEMENTED              */
  498.                                                /* Handle them like EXTERNAL, */
  499.                                                /* but ignore some entries.   */
  500. CONST SVO_OBJECTTYPE_EXTERNAL=3 /* external svobject          */
  501.  
  502.  
  503.   /* The following flags have been introduced with the V2 SVObjects
  504.      (depending on svo_Version : do not check them with V1 SVObjects).
  505.      They should help any applications deciding, whether a specific
  506.      SVObject may fulfil an action or not.
  507.      Note : Some SVObjects may not have the correct flags set and might
  508.             return SVERR_ACTION_NOT_SUPPORTED nevertheless
  509.   */
  510.  
  511.  
  512. CONST SVO_FLAG_READS_TO_BUFFER=0 /* allows reading to SV_GfxBuffer */
  513. CONST SVO_FLAG_READS_TO_SCREEN=1 /* allows displaying on Screen    */
  514.  
  515. CONST SVO_FLAG_WRITES_FROM_BUFFER=2 /* writes SV_GfxBuffer to file    */
  516. CONST SVO_FLAG_WRITES_FROM_SCREEN=4 /* writes Screen to file          */
  517.  
  518. CONST SVO_FLAG_SUPPORTS_SVDRIVER=8 /* uses default SVDriver,         */
  519.                                            /* if available                   */
  520. CONST SVO_FLAG_NEEDS_SVDRIVER=16   /* needs valid default SVDriver   */
  521.                                            /* for working. Developers :      */
  522.                                            /* Set SVO_FLAG_SVDRIVER instead  */
  523.  
  524. CONST SVO_FLAG_SVDRIVER=24
  525.  
  526.  
  527.  /* This structure has to be passed to SVObject's SVO_CheckFileType()
  528.     function, if media other than AKO_MEDIUM_DISK are used for reading.
  529.     This is supported since superview.library V4 and may be ignored by
  530.     SVObjects for compatibility reasons. To prevent older SVO_CheckFileType()
  531.     functions from crashing, superview.library will create a dummy-file and
  532.     pass it's handle also ...
  533.     ("You wanna something to check ? - Here you get it !")
  534.  
  535.      In the V3-SVObject specification this structure will HAVE TO be
  536.      examined, then. In the current V2-specification this is not the case.
  537.   */
  538.     
  539. OBJECT svocheckfile
  540.  medium:LONG   /* AKO_MEDIUM_... */
  541.  future:LONG   /* as usual       */
  542. ENDOBJECT
  543. /**/
  544. DEF strsource[256]:STRING
  545. DEF strdestin[256]:STRING
  546. DEF listf=FALSE
  547. DEF c_f=NIL
  548. DEF showdest=FALSE
  549. /*"main()"*/
  550. PROC main() HANDLE
  551.     DEF tm
  552.     IF wbmessage<>NIL THEN Raise(ER_ONLYCLI)
  553.     IF (tm:=p_OpenLibraries())<>ER_NONE THEN Raise(tm)
  554.     IF (tm:=p_StartCli())<>ER_NONE THEN Raise(tm)
  555.     IF ((c_f=NIL) AND (listf=FALSE))
  556.         p_ViewImage(strsource)
  557.         Raise(ER_NONE)
  558.     ELSEIF listf=TRUE
  559.         p_ListObj()
  560.         Raise(ER_NONE)
  561.     ENDIF
  562.     p_ConvertImage(strsource,strdestin,c_f)
  563.     IF showdest=TRUE THEN p_ViewImage(strdestin)
  564.     Raise(ER_NONE)
  565. EXCEPT
  566.     p_CloseLibraries()
  567.     SELECT exception
  568.         CASE ER_ONLYCLI;        WriteF('Error: Only cli\n')
  569.         CASE ER_SUPERVIEWLIB;   WriteF('Error: superview.library ?\n')
  570.         CASE ER_GADTOOLSLIB;    WriteF('Error: gadtools.library ?\n')
  571.     ENDSELECT
  572. ENDPROC
  573. /**/
  574. /*"p_StartCli()"*/
  575. PROC p_StartCli() HANDLE
  576.     DEF myargs:PTR TO LONG,rdargs=NIL
  577.     myargs:=[0,0,0,0,0]
  578.     IF rdargs:=ReadArgs('Source,Destin,Convert/N,ListFormat/S,ShowDest/S',myargs,NIL)
  579.         IF myargs[0] THEN StrCopy(strsource,myargs[0],ALL)
  580.         IF myargs[1] THEN StrCopy(strdestin,myargs[1],ALL)
  581.         IF myargs[2] THEN c_f:=Long(myargs[2])
  582.         IF myargs[3] THEN listf:=TRUE
  583.         IF myargs[4] THEN showdest:=TRUE
  584.     ELSE
  585.         Raise(ER_BADARGS)
  586.     ENDIF
  587.     Raise(ER_NONE)
  588. EXCEPT
  589.     RETURN exception
  590. ENDPROC
  591. /**/
  592. /*"p_OpenLibraires()"*/
  593. PROC p_OpenLibraries() HANDLE
  594.     IF (superviewbase:=OpenLibrary('superview.library',0))=NIL THEN Raise(ER_SUPERVIEWLIB)
  595.     IF (gadtoolsbase:=OpenLibrary('gadtools.library',0))=NIL THEN Raise(ER_GADTOOLSLIB)
  596.     Raise(ER_NONE)
  597. EXCEPT
  598.     RETURN exception
  599. ENDPROC
  600. /**/
  601. /*"p_CloseLibraries()"*/
  602. PROC p_CloseLibraries()
  603.     IF gadtoolsbase THEN CloseLibrary(gadtoolsbase)
  604.     IF superviewbase THEN CloseLibrary(superviewbase)
  605. ENDPROC
  606. /**/
  607. /*"p_ViewImage(name)"*/
  608. PROC p_ViewImage(name)
  609.     DEF handle
  610.     DEF w:PTR TO window
  611.     DEF retval=SVERR_NO_ERROR,count
  612.     DEF mess:PTR TO intuimessage,type
  613.     DEF tick=0
  614.     handle:=SvL_AllocHandle(NIL)
  615.     IF handle
  616.         retval:=SvL_InitHandleAsDOS(handle,NIL)
  617.         IF retval=0
  618.             retval:=SvL_SetWindowIDCMP(handle,IDCMP_INTUITICKS OR IDCMP_RAWKEY,NIL)
  619.             IF retval=0
  620.                 /*
  621.                 retval:=SvL_SetScreenType(handle,WBENCHSCREEN+PUBLICSCREEN,NIL)
  622.                 IF retval=0
  623.                 */
  624.                     WriteF('SuperView() ?\n')
  625.                     retval:=SvL_SuperView(handle,name)
  626.                     WriteF('SuperView() ok\n')
  627.                     IF retval=0
  628.                         retval:=SvL_GetWindowAddress(handle,{w},NIL)
  629.                         IF retval=0
  630.                             IF w
  631.                                 start:
  632.                                 WHILE mess:=Gt_GetIMsg(w.userport)
  633.                                     type:=mess.class
  634.                                     SELECT type
  635.                                         CASE IDCMP_RAWKEY; IF mess.code=69 THEN JUMP end
  636.                                         CASE IDCMP_INTUITICKS
  637.                                             tick:=tick+1
  638.                                             IF tick=50 THEN JUMP end
  639.                                     ENDSELECT
  640.                                     Gt_ReplyIMsg(mess)
  641.                                 ENDWHILE
  642.                                 JUMP start
  643.                                 end:
  644.                             ENDIF
  645.                         ELSE
  646.                             WriteF('\s\n',SvL_GetErrorString(retval))
  647.                         ENDIF
  648.                     ELSE
  649.                         WriteF('\s\n',SvL_GetErrorString(retval))
  650.                     ENDIF
  651.                 /*
  652.                 ELSE
  653.                     WriteF('\s\n',SvL_GetErrorString(retval))
  654.                 ENDIF
  655.                 */
  656.             ELSE
  657.                 WriteF('\s\n',SvL_GetErrorString(retval))
  658.             ENDIF
  659.         ELSE
  660.             WriteF('\s\n',SvL_GetErrorString(retval))
  661.         ENDIF
  662.         SvL_FreeHandle(handle)
  663.     ELSE
  664.         WriteF('Alloc handle failed.\n')
  665.     ENDIF
  666. ENDPROC
  667. /**/
  668. /*"p_ListObj()"*/
  669. PROC p_ListObj()
  670.    DEF l:PTR TO lh
  671.    DEF n:PTR TO ln
  672.    DEF o:PTR TO svobjectinfo
  673.    DEF of:PTR TO svobjectinfo
  674.    DEF retval
  675.    retval:=SvL_GetSVObjectList({o})
  676.    IF retval=0
  677.         of:=o
  678.         WHILE (o)
  679.             WriteF('Name:\l\s[24] SubTypeCode:\d[2]\n',o.typename,o.type)
  680.             o:=o.nextentry
  681.         ENDWHILE
  682.         SvL_FreeSVObjectList(of)
  683.     ELSE
  684.         WriteF('\s\n',SvL_GetErrorString(retval))
  685.     ENDIF
  686. ENDPROC
  687. /**/
  688. /*"p_ConvertImage(s,d,t)"*/
  689. PROC p_ConvertImage(s,d,t) HANDLE
  690.     DEF retval
  691.     DEF h_s=NIL,h_d=NIL
  692.     DEF s_screen=NIL,s_window=NIL
  693.     /*=== Source Allocation ===*/
  694.     h_s:=SvL_AllocHandle(NIL)
  695.     IF h_s=NIL THEN Raise(ER_HANDLE)
  696.     /*=========================*/
  697.     retval:=SvL_InitHandleAsDOS(h_s,NIL)
  698.     IF retval<>0 THEN Raise(retval)
  699.     /*=========================*/
  700.     retval:=SvL_SetWindowIDCMP(h_s,IDCMP_MOUSEBUTTONS+IDCMP_VANILLAKEY,NIL)
  701.     IF retval<>0 THEN Raise(retval)
  702.     /*=========================*/
  703.     retval:=SvL_SetScreenType(h_s,CUSTOMSCREEN,NIL)
  704.     IF retval<>0 THEN Raise(retval)
  705.     retval:=SvL_SuperView(h_s,s)
  706.     IF retval<>0 THEN Raise(retval)
  707.     retval:=SvL_GetScreenAddress(h_s,{s_screen},NIL)
  708.     IF retval<>0 THEN Raise(retval)
  709.     retval:=SvL_GetWindowAddress(h_s,{s_window},NIL)
  710.  
  711.     /*=== Destination Allocation ===*/
  712.     h_d:=SvL_AllocHandle(NIL)
  713.     IF h_d=NIL THEN Raise(ER_HANDLE)
  714.     retval:=SvL_InitHandleAsDOS(h_d,NIL)
  715.     IF retval<>0 THEN Raise(retval)
  716.     retval:=SvL_SetWriteType(h_d,t,NIL)
  717.     IF retval<>0 THEN Raise(retval)
  718.     retval:=SvL_SetWriteName(h_d,d,NIL)
  719.     IF retval<>0 THEN Raise(retval)
  720.     retval:=SvL_SetWriteScreen(h_d,s_screen,NIL)
  721.     IF retval<>0 THEN Raise(retval)
  722.     retval:=SvL_SuperWrite(h_d)
  723.     IF retval<>0 THEN Raise(retval)
  724.     Delay(150)
  725.     IF h_d 
  726.         /*SvL_FreeResources(h_d)*/
  727.         SvL_FreeHandle(h_d)
  728.     ENDIF
  729.     IF h_s 
  730.         /*SvL_FreeResources(h_s)*/
  731.         SvL_FreeHandle(h_s)
  732.     ENDIF
  733.     Raise(ER_NONE)
  734. EXCEPT
  735.     IF exception<>ER_NONE
  736.         WriteF('\s\n',SvL_GetErrorString(exception))
  737.         IF h_d THEN SvL_FreeHandle(h_d)
  738.         IF h_s THEN SvL_FreeHandle(h_s)
  739.     ENDIF
  740.     RETURN exception
  741. ENDPROC
  742. /**/
  743.  
  744.